package org.waddy.framework.sys;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

import org.apache.log4j.Logger;


/**
 * 类名称：DataCache 基础数据缓存类 
 * 类描述： 
 * 创建人：张大朋 
 * 创建时间：Dec 26, 2010
 * @version 1.0
 */
public class DataCache {
	private final static Logger logger = Logger.getLogger(DataCache.class);

	/**
	 * 缓存目标map
	 */
	public static Map<String, Object> dictionary = Collections
			.synchronizedMap(new HashMap<String, Object>());
	
	/**
	 * 自动刷新缓存标志
	 */
	private static boolean isAutoRefresh =false;
	
	/**
	 * 自动刷新周期，默认以分钟为单位
	 */
	private static int period =60 * 2;
	
	/**
	 * 时间单位，暂未使用
	 */
	private String timeUnit ="m";


	/**
	 * 默认构造方法
	 */
	public DataCache() {
		// TODO Auto-generated constructor stub
	}
	
	/**
	 * 指定自动刷新标志的构造方法
	 * @param isAutoRefresh
	 * @param period
	 */
	public DataCache(boolean isAutoRefresh, int period) {
		// TODO Auto-generated constructor stub
	}
	
	/**
	 * initial 缓存初始化方法
	 * @Exception 异常对象
	 * @since
	 */
	public static void initial() {
		// 初始化缓存数据
		refresh(dictionary);

		// 开启自动刷新缓存timer
		if( isAutoRefresh){
			TimerTask task = new TimerTask() {
				@Override
				public void run() {
					refresh(dictionary);
				}
			};
			
			new Timer().schedule(task, 1, period * 1000);
		}
		
		logger.debug("[加载系统缓存数据]...end");
	}

	/**
	 * refresh 缓存刷新方法
	 * @Exception 异常对象
	 */
	public static void refresh(Map cachedMap) {
			// 缓存加载完成后一次性替换旧缓存数据
			dictionary = cachedMap;
	}


	/**
	 * 本类的测试方法
	 */
	public static void main(String[] args) {
		// Connection conn =DataCache.getConnection();
		// JdbcUtil.close(conn);
		DataCache.initial();
	}

}
